#pragma once

#include "eventuals/eventual.h"

////////////////////////////////////////////////////////////////////////

namespace eventuals {

////////////////////////////////////////////////////////////////////////

template <typename T>
[[nodiscard]] auto Just(T t) {
  return Eventual<T>([t = std::move(t)](auto& k, auto&&...) mutable {
    k.Start(std::move(t));
  });
}

[[nodiscard]] inline auto Just() {
  return Eventual<void>([](auto& k, auto&&...) {
    k.Start();
  });
}

////////////////////////////////////////////////////////////////////////

} // namespace eventuals

////////////////////////////////////////////////////////////////////////
